stylecontext: Add a flag to force style_updated() emission
authorBenjamin Otte <otte@redhat.com>
Wed, 14 Nov 2012 12:24:58 +0000 (13:24 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 14 Nov 2012 12:25:44 +0000 (13:25 +0100)
This is used in gtk_widget_reset_style() (via GTK_CSS_CHANGE_ANY) now,
and that makes GtkSettings font related changes work again.

gtk/gtkcsstypesprivate.h
gtk/gtkstylecontext.c

index 55ad3b53ce7f74973c034cd3376fe6f21c6c1218..ab360ef7d5c9cf110f7dc18b272f2fce33e10e05 100644 (file)
@@ -49,10 +49,11 @@ typedef enum { /*< skip >*/
   GTK_CSS_CHANGE_PARENT_SIBLING_STATE     = (1 << 15),
   /* add more */
   GTK_CSS_CHANGE_SOURCE                   = (1 << 16),
-  GTK_CSS_CHANGE_ANIMATE                  = (1 << 17)
+  GTK_CSS_CHANGE_ANIMATE                  = (1 << 17),
+  GTK_CSS_CHANGE_FORCE_INVALIDATE         = (1 << 18)
 } GtkCssChange;
 
-#define GTK_CSS_CHANGE_ANY ((1 << 18) - 1)
+#define GTK_CSS_CHANGE_ANY ((1 << 19) - 1)
 #define GTK_CSS_CHANGE_ANY_SELF (GTK_CSS_CHANGE_CLASS | GTK_CSS_CHANGE_NAME | GTK_CSS_CHANGE_POSITION | GTK_CSS_CHANGE_STATE)
 #define GTK_CSS_CHANGE_ANY_SIBLING (GTK_CSS_CHANGE_SIBLING_CLASS | GTK_CSS_CHANGE_SIBLING_NAME | \
                                     GTK_CSS_CHANGE_SIBLING_POSITION | GTK_CSS_CHANGE_SIBLING_STATE)
index c0253a49937b5edea006db78ef7b6da098f3526c..8a193cc65d1c7579d16b9c4e00b0bafafb488ca7 100644 (file)
@@ -3180,7 +3180,7 @@ _gtk_style_context_validate (GtkStyleContext  *context,
       _gtk_bitmask_free (animation_changes);
     }
 
-  if (!_gtk_bitmask_is_empty (changes))
+  if (!_gtk_bitmask_is_empty (changes) || (change & GTK_CSS_CHANGE_FORCE_INVALIDATE))
     gtk_style_context_do_invalidate (context);
 
   change = _gtk_css_change_for_child (change);